package 排序算法;

import java.util.Arrays;

/**
 * @author kakayubei
 * @date 2021/10/10 14:11
 * 选择排序和冒泡排序有一点点像，选择排序是默认前面都是已经排序好的，然后从后面
 * 选择最小的放在前面排序好的的后面，首先第一轮循环的时候默认的排序好的为空，然
 * 后从后面选择最小的放到数组的第一个位置，第二轮循环的时候默认第一个元素是已经
 * 排序好的，然后从剩下的找出最小的放到数组的第二个位置，第三轮循环的时候默认前
 * 两个都是已经排序好的，然后再从剩下的选择一个最小的放到数组的第三个位置，以此
 * 类推。
 */
public class SelectSort {
    public static void selectSort(int[] array) {
        for (int i = 0, len = array.length; i < len - 1; i++) {
            int min = i;
            for (int j = min + 1; j < len; j++ ) {
                if (array[j] < array[min]){
                    min = j;
                }
            }
            if (min != i) {
                int tmp = array[i];
                array[i] = array[min];
                array[min] = tmp;
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = new int[] { 2, 1, 5, 2, 9, 4 };
        selectSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
